From 138d3b64a111b52f2cfe42c3ef84283bd281fae4 Mon Sep 17 00:00:00 2001
From: Tim Gover <tim.gover@raspberrypi.com>
Date: Fri, 16 Dec 2022 15:51:17 +0000
Subject: [PATCH] overlays: Add disable-emmc2

Add a new overlay that disables the EMMC2 controller on BCM2711.
This can be useful on a Compute Module 4 if the onboard EMMC2
storage is unreliable and the system can be booted by other
means e.g Network / USB.

Signed-off-by: Tim Gover <tim.gover@raspberrypi.com>
---
 arch/arm/boot/dts/overlays/Makefile                 |  1 +
 arch/arm/boot/dts/overlays/README                   |  8 ++++++++
 .../arm/boot/dts/overlays/disable-emmc2-overlay.dts | 13 +++++++++++++
 arch/arm/boot/dts/overlays/overlay_map.dts          |  4 ++++
 4 files changed, 26 insertions(+)
 create mode 100644 arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts

--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -49,6 +49,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
 	dionaudio-loco.dtbo \
 	dionaudio-loco-v2.dtbo \
 	disable-bt.dtbo \
+	disable-emmc2.dtbo \
 	disable-wifi.dtbo \
 	dpi18.dtbo \
 	dpi18cpadhi.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -895,6 +895,14 @@ Load:   dtoverlay=disable-bt
 Params: <None>
 
 
+Name:   disable-emmc2
+Info:   Disable EMMC2 controller on BCM2711.
+        The allows the onboard EMMC storage on Compute Module 4 to be disabled
+        e.g. if a fault has occurred.
+Load:   dtoverlay=disable-emmc2
+Params: <None>
+
+
 Name:   disable-wifi
 Info:   Disable onboard WLAN on Pi 3B, 3B+, 3A+, 4B and Zero W.
 Load:   dtoverlay=disable-wifi
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts
@@ -0,0 +1,13 @@
+/dts-v1/;
+/plugin/;
+
+/{
+	compatible = "brcm,bcm2711";
+
+	fragment@0 {
+		target = <&emmc2>;
+		__overlay__ {
+			status = "disabled";
+		};
+	};
+};
--- a/arch/arm/boot/dts/overlays/overlay_map.dts
+++ b/arch/arm/boot/dts/overlays/overlay_map.dts
@@ -9,6 +9,10 @@
 		bcm2711;
 	};
 
+	disable-emmc2 {
+		bcm2711;
+	};
+
 	highperi {
 		bcm2711;
 	};
